package hotel.dao;

import hotel.tipos.Hospede;
import hotel.tipos.TipoApartamento;
import hotel.util.HibernateUtil;
import java.util.LinkedList;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;

public class TipoApartamentoDao {
	public static int create(TipoApartamento tAp){
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
				
				session.beginTransaction();

		        Integer id = (Integer) session.save(tAp);
		        
		        session.getTransaction().commit();
		        
		        return id.intValue();
			}
	
	@SuppressWarnings("unchecked")
	public static LinkedList<TipoApartamento> listarApartamentos() {
		// Cria uma sessão
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		// inicia a transação
		session.beginTransaction();
		// Cria uma lista para retornar
		LinkedList<TipoApartamento> tipoApartamentos = null;
		
		try{
			tipoApartamentos = new LinkedList<TipoApartamento>(session.createQuery("from TipoApartamento").list());
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return tipoApartamentos;
	}
	
	public static TipoApartamento buscarAp(int id){
		// Cria uma sessão
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		// inicia a transação
		session.beginTransaction();
		// Cria uma lista para retornar
		TipoApartamento tAp = null;
		
		String query = new String("select t from TipoApartamento t where t.id = :idT");
		Query q = session.createQuery(query);
		q.setInteger("idT",id);
		
		try {
			tAp = (TipoApartamento) q.list().get(0);
		} catch (HibernateException e){
			e.printStackTrace();
		} catch (IndexOutOfBoundsException ie){
			tAp = null;
		}
		
		return tAp;
	}
}
